"""
Python的历史
1.1989年圣诞节：Guido von Rossum开始写Python语言的编译器。
2.1991年2月：第一个Python编译器（同时也是解释器）诞生，它是用C语言实现的（后面），可以调用C语言的库函数。在最早的版本中，Python已经提供了对“类”，“函数”，“异常处理”等构造块的支持，还有对列表、字典等核心数据类型，同时支持以模块为基础来构造应用程序。
3.1994年1月：Python 1.0正式发布。
4.2000年10月16日：Python 2.0发布，增加了完整的垃圾回收，提供了对Unicode的支持。与此同时，Python的整个开发过程更加透明，社区对开发进度的影响逐渐扩大，生态圈开始慢慢形成。
5.2008年12月3日：Python 3.0发布，它并不完全兼容之前的Python代码，不过因为目前还有不少公司在项目和运维中使用Python 2.x版本，所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。

Python的优缺点
Python的优点很多，简单的可以总结为以下几点。
简单明了，学习曲线低，比很多编程语言都容易上手。
开放源代码，拥有强大的社区和生态圈，尤其是在数据分析和机器学习领域。
解释型语言，天生具有平台可移植性，代码可以工作于不同的操作系统。
对两种主流的编程范式（面向对象编程和函数式编程）都提供了支持。
代码规范程度高，可读性强，适合有代码洁癖和强迫症的人群。

Python的缺点主要集中在以下几点。
执行效率稍低，对执行效率要求高的部分可以由其他语言（如：C、C++）编写。
代码无法加密，但是现在很多公司都不销售卖软件而是销售服务，这个问题会被弱化。
在开发时可以选择的框架太多（如Web框架就有100多个），有选择的地方就有错误。

Python的应用领域
目前Python在Web应用后端开发、云基础设施建设、DevOps、网络数据采集（爬虫）、自动化测试、数据分析、机器学习等领域都有着广泛的应用。
"""

"""
安装Python解释器：
1.Windows环境
可以在Python官方网站下载到Python的Windows安装程序（exe文件）
2.Linux环境
Linux环境自带了Python 2.x版本，但是如果要更新到3.x的版本，可以在Python的官方网站下载Python的源代码并通过源代码构建安装的方式进行安装

使用编辑器PyCharm:
1.PyCharm的下载和安装
可以在JetBrains公司的官方网站找到PyCharm的下载链接，
有两个可供下载的版本，一个是社区版（PyCharm CE），一个是专业版（PyCharm Professional）。

2.常用快捷键
command + j	 显示可用的代码模板
command + b	 查看函数、类、方法的定义
ctrl + space	万能代码提示快捷键，一下不行按两下
command + alt + l	格式化代码
alt + enter	   万能代码修复快捷键
ctrl + /	   注释/反注释代码
shift + shift	万能搜索快捷键
command + d / command + y	 复制/删除一行代码
command + shift + - / command + shift + +	折叠/展开所有代码
F2	快速定位到错误代码
command+ alt + F7	查看哪些地方用到了指定的函数、类、方法
ctrl + f 查询
ctrl + r 替换
说明：Windows系统下如果使用PyCharm的默认设置，可以将上面的command键换成ctrl键即可，唯一的例外是ctrl + space那个快捷键，
因为它跟Windows系统切换输入法的快捷键是冲突的，所以在Windows系统下默认没有与之对应的快捷键。
"""

"""
1.运行python 程序
"""
print('hello,world')

"""
2.代码中的注释
注释是编程语言的一个重要组成部分，用于在源代码中解释代码的作用从而增强程序的可读性和可维护性，
当然也可以将源代码中不需要参与运行的代码段通过注释来去掉，这一点在调试程序的时候经常用到。
注释在随源代码进入预处理器或编译时会被移除，不会在目标代码中保留也不会影响程序的执行结果。

    单行注释 - 以#和空格开头的部分
    多行注释 - 三个引号开头，三个引号结尾 
"""


"""exercise"""
# 在Python交互式环境中输入下面的代码并查看结果，请尝试将看到的内容翻译成中文。
import this

"""
python之禅:
    •优美胜于丑陋（Python 以编写优美的代码为目标）
    •明了胜于晦涩（优美的代码应当是明了的，命名规范，风格相似）
    •简洁胜于复杂（优美的代码应当是简洁的，不要有复杂的内部实现）
    •复杂胜于凌乱（如果复杂不可避免，那代码间也不能有难懂的关系，要保持接口简洁）    
    •扁平胜于嵌套（优美的代码应当是扁平的，不能有太多的嵌套）    
    •间隔胜于紧凑（优美的代码有适当的间隔，不要奢望一行代码解决问题）    
    •可读性很重要（优美的代码是可读的）    
    •即便假借特例的实用性之名，也不可违背这些规则（这些规则至高无上）    
    •不要包容所有错误，除非你确定需要这样做（精准地捕获异常，不写 except:pass 风格的代码）   
    •当存在多种可能，不要尝试去猜测    
    •而是尽量找一种，最好是唯一一种明显的解决方案（如果不确定，就用穷举法）    
    •虽然这并不容易，因为你不是 Python 之父（这里的 Dutch 是指 Guido ）    
    •做也许好过不做，但不假思索就动手还不如不做（动手之前要细思量）   
    •如果你无法向人描述你的方案，那肯定不是一个好方案；反之亦然（方案测评标准）    
    •命名空间是一种绝妙的理念，我们应当多加利用（倡导与号召）
"""

# 2.学习使用turtle在屏幕上绘制图形。
import turtle

turtle.pensize(4)
turtle.pencolor('red')

turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)

turtle.mainloop()